//没时间调试，留给学生思考
#include <bits/stdc++.h>
using namespace std;
int f[32000000 + 100][11];
int M;
long long  dfs(int cur, int depth) {
  if (depth == 0)
    return 1;
  if (f[cur][depth] != -1)
    return f[cur][depth];
  long long  res = 0;
  for (int alpha = 1; alpha <= 26; alpha++) {
    int k = ((cur * 33) ^ alpha) % M; // k既是输出结果，也是下层输入起点开始
    res += dfs(k, depth - 1);
  }
  f[cur][depth] = res;
  return res;
}
int main() {
  int m, t, n;
  cin >> m >> t >> n;
  M = 1 << m;
  memset(f, -1, sizeof(f));
  dfs(0, n+1);
  cout << f[0][n+1];
  return 0;
}